let that;
export default {
  pageInit(value, _this) {
    that = _this;
    _this.$set(value, "clickCount", 0);
    if (value.minimum == 0) {
      //最低购买量=0，按中包装购买
      _this.$set(value, "step", value.packages);
      value.initializeMinimum = value.packages;
    }
    if (value.minimum >= 1) {
      //按最低购买量购买
      _this.$set(value, "step", value.minimum);
      value.initializeMinimum = value.minimum;
    }
    if (value.minimum > value.maximum) value.initializeMinimum = value.maximum;
    // 用于和商品列表统一字段
    if (value.cartNumber) {
      value.initializeMinimum = value.cartNumber;
    }
    if (value.restrictBuyNumber) {
      value.maximum = value.restrictBuyNumber;
    }
  },
  /**
   * 手动输入
   * @param {Number} value 输入的值
   */
  onChange(value) {
    this.testRes(value.initializeMinimum, 0, value);
    // if (
    //   value.clickCount == 0 &&
    //   value.quantity != 0 &&
    //   value.initializeMinimum > value.goodsPriceStruct.specialPriceCeilingNum
    // ) {
    //   that.$toast("您已达到限购数量，超出部分将以原价进行计算~");
    //   value.clickCount++;
    // }
    // if (value.initializeMinimum <= value.goodsPriceStruct.specialPriceCeilingNum) {
    //   value.clickCount = 0;
    // }
  },
  /**
   * 键盘事件
   * @param {Object} e 事件对象
   */
  // keyUp(e) {
  //     let keyCode = e.keyCode
  //     if (keyCode == 13) { //回车
  //         this.onChange(value)
  //         e.target.blur()
  //     }
  // },
  /**
   * 加
   */
  plus(value) {
    this.testRes((value.initializeMinimum += value.step), 1, value);
    // if (
    //   value.clickCount == 0 &&
    //   value.quantity != 0 &&
    //   value.initializeMinimum > value.goodsPriceStruct.specialPriceCeilingNum
    // ) {
    //   that.$toast("您已达到限购数量，超出部分将以原价进行计算~");
    //   value.clickCount++;
    // }
    // // restrictNumber
    // if (value.initializeMinimum < value.goodsPriceStruct.specialPriceCeilingNum) {
    //   value.clickCount = 0;
    // }
  },
  /**
   * 减
   */
  sub(value) {
    this.testRes((value.initializeMinimum -= value.step), -1, value);
    // if (value.initializeMinimum <= value.goodsPriceStruct.specialPriceCeilingNum) {
    //   value.clickCount = 0;
    // }
  },
  /**
   * 验证规则
   * @param {Number} v 对象
   * @param {Number} value 值
   * @param {Number} type 类型 0输入;1加;-1减
   */
  testRes(value, type = 0, v) {
    if (value <= v.packages * 0.6 && v.minimum == 1) {
      if (v.step == v.packages && v.step != v.minimum) {
        if (type < 0) {
          value = v.packages * 0.6;
        }
      }
      v.step = v.minimum;
    }
    if (!value) value = v.step;
    if (v.minimum == 0 || v.minimum > 1) {
      if (type == 0) {
        if (value % v.step != 0) value = value - (value % v.step) + v.step; //只能为中包装的整数倍
        if (value > v.piece && value % v.piece >= v.piece * 0.7) {
          //数量>=件装量70%，且库存大于件装量:数量=件装量
          if (value % v.piece != 0) {
            that.$toast(
              "温馨提示：您所选择的数量已接近件装量，为避免拆零引起的运输破损，系统自动调为整件。"
            );
            value = value - (value % v.piece) + v.piece;
          }
        }
        if (value < v.piece && value >= v.piece * 0.7) {
          //数量>=件装量70%，且库存大于件装量:数量=件装量
          that.$toast(
            "温馨提示：您所选择的数量已接近件装量，为避免拆零引起的运输破损，系统自动调为整件。"
          );
          value = value - (value % v.piece) + v.piece;
        }
      } else {
        if (value % v.piece >= v.piece * 0.7) {
          //数量>=件装量70%，且库存大于件装量:数量=件装量
          if (type < 0) {
            value =
              ((value + v.step) / v.piece) * v.piece - v.piece * 0.3 - v.step;
          }
          if (type > 0) {
            that.$toast(
              "温馨提示：您所选择的数量已接近件装量，为避免拆零引起的运输破损，系统自动调为整件。"
            );
            value = value - (value % v.piece) + v.piece;
          }
        }
        if (value % v.step != 0) value = value - (value % v.step) + v.step; //只能为中包装的整数倍
      }
    }
    if (v.minimum == 1) {
      if (type == 0) {
        if (value > v.piece && value % v.piece >= v.piece * 0.7) {
          //数量>=件装量70%，且库存大于件装量:数量=件装量
          if (value % v.piece != 0) {
            that.$toast(
              "温馨提示：您所选择的数量已接近件装量，为避免拆零引起的运输破损，系统自动调为整件。"
            );
            value = value - (value % v.piece) + v.piece;
            v.step = v.packages;
          }
        }
        if (
          value % v.packages > v.packages * 0.5 ||
          (value >= v.packages &&
            v.step <= v.minimum &&
            v.packages != v.minimum)
        ) {
          //数量>=件装量60%，且库存大于件装量:数量=件装量
          that.$toast(
            "温馨提示：您所选择的数量接近中包装，自动调整为中包装，并按中包装整数倍购买。"
          );
          value =
            v.step == v.packages
              ? value - (value % v.packages) + v.packages
              : value - (value % v.packages);
          v.step = v.packages;
        }
      } else {
        if (value % v.piece >= v.piece * 0.7) {
          //数量>=件装量70%，且库存大于件装量:数量=件装量
          if (type < 0) {
            value =
              ((value + v.step) / v.piece) * v.piece - v.piece * 0.3 - v.step;
          }
          if (type > 0) {
            that.$toast(
              "温馨提示：您所选择的数量已接近件装量，为避免拆零引起的运输破损，系统自动调为整件。"
            );
            value = value - (value % v.piece) + v.piece;
          }
        }
        if (
          value % v.packages > v.packages * 0.5 ||
          (value >= v.packages &&
            v.step <= v.minimum &&
            v.packages != v.minimum)
        ) {
          //数量>=件装量60%，且库存大于件装量:数量=件装量
          if (type < 0) {
            value = value - (value % v.packages) + v.packages * 0.5;
          }
          if (type > 0) {
            that.$toast(
              "温馨提示：您所选择的数量接近中包装，自动调整为中包装，并按中包装整数倍购买"
            );
            value = value - (value % v.packages) + v.packages;
            v.step = v.packages;
          }
        }
      }
      if (value % v.step != 0) {
        value = value - (value % v.step) + v.step;
      } //只能为中包装的整数倍
      if (value < v.piece && value >= v.piece * 0.7) {
        //数量>=件装量70%，且库存大于件装量:数量=件装量
        that.$toast(
          "温馨提示：您所选择的数量已接近件装量，为避免拆零引起的运输破损，系统自动调为整件。"
        );
        value = value - (value % v.piece) + v.piece;
      }
    }
    if (value <= v.step) {
      //最小只能=最小购买量
      value = v.step >= v.maximum ? v.maximum : v.step;
      v.initializeMinimum = value;
      return value;
    }
    if (value >= v.maximum) {
      //购买量只能=最大购买量（库存）
      that.$toast("已达最大购买量！");
      value = v.maximum;
      v.initializeMinimum = value;
      return value;
    }
    v.initializeMinimum = value;
    return value;
  }
};
